{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 9. 市场宽度\n",
    "*对市场内股票数据进行统计，观察样本变化。*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 目录\n",
    "1. 什么是市场宽度？\n",
    "2. 怎么计算市场宽度？\n",
    "3. 如何用图形展示市场宽度？\n",
    "4. 如何用市场宽度来编写策略？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 什么是市场宽度？\n",
    "市场宽度指标指某一日收盘时，显示某指数组合的股票的上涨数量与下跌数量的比率，有比较准确预测大盘行情的功能。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 怎么计算市场宽度？\n",
    "\n",
    "### 1. Advance & Decline Percent (Participation)\n",
    "\n",
    "$\\frac{(Advance-Decline)}{Total}$\n",
    "\n",
    "### 2. High & Low Percent (Leadership)\n",
    "\n",
    "$\\frac{(High-Low)}{Total}$\n",
    "\n",
    "### 3. MA50_up & MA50_down Percent (Trend)\n",
    "\n",
    "$\\frac{(MA50_{up}-MA50_{down})}{Total}$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 如何用图形展示市场宽度？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "RemoteDataError",
     "evalue": "Unable to read URL: http://ichart.finance.yahoo.com/table.csv?a=11&ignore=.csv&s=0001.hk&b=1&e=2&d=5&g=d&f=2017&c=2016",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mRemoteDataError\u001b[0m                           Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-1-10f212cd1b8d>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m     14\u001b[0m \u001b[0mdict\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     15\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0ms\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mStockList\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 16\u001b[1;33m     \u001b[0mstock\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mweb\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDataReader\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'yahoo'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstart\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     17\u001b[0m     \u001b[0mdict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstock\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     18\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda2\\lib\\site-packages\\pandas_datareader\\data.pyc\u001b[0m in \u001b[0;36mDataReader\u001b[1;34m(name, data_source, start, end, retry_count, pause, session, access_key)\u001b[0m\n\u001b[0;32m    114\u001b[0m                                 \u001b[0madjust_price\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mFalse\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mchunksize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m25\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    115\u001b[0m                                 \u001b[0mretry_count\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mretry_count\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpause\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mpause\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 116\u001b[1;33m                                 session=session).read()\n\u001b[0m\u001b[0;32m    117\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    118\u001b[0m     \u001b[1;32melif\u001b[0m \u001b[0mdata_source\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m\"yahoo-actions\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda2\\lib\\site-packages\\pandas_datareader\\yahoo\\daily.pyc\u001b[0m in \u001b[0;36mread\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m     74\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     75\u001b[0m         \u001b[1;34m\"\"\" read one data from specified URL \"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 76\u001b[1;33m         \u001b[0mdf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mYahooDailyReader\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     77\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mret_index\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     78\u001b[0m             \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Ret_Index'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_calc_return_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Adj Close'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda2\\lib\\site-packages\\pandas_datareader\\base.pyc\u001b[0m in \u001b[0;36mread\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    153\u001b[0m         \u001b[1;31m# If a single symbol, (e.g., 'GOOG')\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    154\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msymbols\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mcompat\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstring_types\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 155\u001b[1;33m             \u001b[0mdf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_read_one_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_params\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msymbols\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    156\u001b[0m         \u001b[1;31m# Or multiple symbols, (e.g., ['GOOG', 'AAPL', 'MSFT'])\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    157\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msymbols\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mDataFrame\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda2\\lib\\site-packages\\pandas_datareader\\base.pyc\u001b[0m in \u001b[0;36m_read_one_data\u001b[1;34m(self, url, params)\u001b[0m\n\u001b[0;32m     72\u001b[0m         \u001b[1;34m\"\"\" read one data from specified URL \"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     73\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_format\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'string'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 74\u001b[1;33m             \u001b[0mout\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_read_url_as_StringIO\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     75\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_format\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'json'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     76\u001b[0m             \u001b[0mout\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_response\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjson\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda2\\lib\\site-packages\\pandas_datareader\\base.pyc\u001b[0m in \u001b[0;36m_read_url_as_StringIO\u001b[1;34m(self, url, params)\u001b[0m\n\u001b[0;32m     83\u001b[0m         \u001b[0mOpen\u001b[0m \u001b[0murl\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;32mand\u001b[0m \u001b[0mretry\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     84\u001b[0m         \"\"\"\n\u001b[1;32m---> 85\u001b[1;33m         \u001b[0mresponse\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_response\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     86\u001b[0m         \u001b[0mtext\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_sanitize_response\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     87\u001b[0m         \u001b[0mout\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mStringIO\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\Anaconda2\\lib\\site-packages\\pandas_datareader\\base.pyc\u001b[0m in \u001b[0;36m_get_response\u001b[1;34m(self, url, params)\u001b[0m\n\u001b[0;32m    118\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mparams\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mNone\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    119\u001b[0m             \u001b[0murl\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0murl\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m\"?\"\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0murlencode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 120\u001b[1;33m         \u001b[1;32mraise\u001b[0m \u001b[0mRemoteDataError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Unable to read URL: {0}'\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    121\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    122\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_read_lines\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mout\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mRemoteDataError\u001b[0m: Unable to read URL: http://ichart.finance.yahoo.com/table.csv?a=11&ignore=.csv&s=0001.hk&b=1&e=2&d=5&g=d&f=2017&c=2016"
     ]
    }
   ],
   "source": [
    "#ADP\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import pandas_datareader.data as web # 需要安装 pip install pandas_datareader\n",
    "import datetime\n",
    "\n",
    "start = datetime.datetime(2016, 12, 1)\n",
    "# end = datetime.datetime(2016,6,30)\n",
    "\n",
    "StockList = ['0001.hk',  '0002.hk', '0003.hk', '0004.hk', '0006.hk', '0011.hk', '0012.hk', '0016.hk',\n",
    "             '0017.hk', '0019.hk', '0023.hk', '0027.hk', '0066.hk', '0083.hk', '0101.hk', '0135.hk', '0144.hk',\n",
    "             '0151.hk', '0175.hk', '0267.hk', '0293.hk', '0386.hk', '0388.hk', '0688.hk', '0700.hk', '0762.hk',\n",
    "             '0823.hk', '0836.hk', '0867.hk']\n",
    "dict = {}\n",
    "for s in StockList:\n",
    "    stock = web.DataReader(s, 'yahoo', start)\n",
    "    dict[s] = stock\n",
    "\n",
    "pn = pd.Panel(dict)\n",
    "\n",
    "print pn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'pn' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-1-9c4e8cce8be1>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mminor_xs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Adj Close'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpct_change\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0mcond1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m>\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0mcond2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m<\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcond1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcond2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNameError\u001b[0m: name 'pn' is not defined"
     ]
    }
   ],
   "source": [
    "data = pn.minor_xs('Adj Close').pct_change()\n",
    "cond1 = data>0\n",
    "cond2 = data<0\n",
    "data[cond1]=1\n",
    "data[cond2]=-1\n",
    "\n",
    "def sum(row):\n",
    "    row=row[1]\n",
    "    return row.sum()\n",
    "\n",
    "data['AD'] = map(sum, data.iterrows())\n",
    "data['ADP'] = data.AD/len(StockList)\n",
    "print data.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Date\n",
      "2016-01-01    0.0\n",
      "2016-01-04    0.0\n",
      "2016-01-05    0.0\n",
      "2016-01-06    0.0\n",
      "2016-01-07    0.0\n",
      "2016-01-08    0.0\n",
      "2016-01-11    0.0\n",
      "2016-01-12    0.0\n",
      "2016-01-13    1.0\n",
      "2016-01-14    2.0\n",
      "Freq: B, Name: High, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "#HLP\n",
    "#Highest\n",
    "high = pn.minor_xs('High')\n",
    "\n",
    "def recent_high(series, window=5):\n",
    "    return series.rolling(window).max()\n",
    "\n",
    "high_dict = {}\n",
    "for name, candle in high.iteritems():\n",
    "    HLP = recent_high(candle)\n",
    "    high_dict[name] = HLP\n",
    "\n",
    "highest = pd.DataFrame(high_dict)\n",
    "cond_h = high>=highest\n",
    "cond_no = high<highest\n",
    "highest[cond_h]=1\n",
    "highest[cond_no]=0\n",
    "\n",
    "highest = pd.DataFrame(high_dict)\n",
    "cond_h = high>=highest\n",
    "cond_no = high<highest\n",
    "highest[cond_h]=1\n",
    "highest[cond_no]=0\n",
    "\n",
    "data['High'] = map(sum, highest.iterrows())\n",
    "\n",
    "print data.High.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Date\n",
      "2016-01-01    0.000000\n",
      "2016-01-04    0.000000\n",
      "2016-01-05    0.000000\n",
      "2016-01-06    0.000000\n",
      "2016-01-07   -0.931034\n",
      "2016-01-08   -0.551724\n",
      "2016-01-11   -0.896552\n",
      "2016-01-12   -0.655172\n",
      "2016-01-13   -0.275862\n",
      "2016-01-14   -0.655172\n",
      "Freq: B, Name: HLP, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "#Lowest\n",
    "low = pn.minor_xs('Low')\n",
    "\n",
    "def recent_low(series, window=5):\n",
    "    return series.rolling(window).min()\n",
    "\n",
    "low_dict = {}\n",
    "for name, candle in low.iteritems():\n",
    "    HLP = recent_low(candle)\n",
    "    low_dict[name] = HLP\n",
    "    \n",
    "lowest = pd.DataFrame(low_dict)\n",
    "cond_l = low<=lowest\n",
    "cond_no = low>lowest\n",
    "lowest[cond_l]=1\n",
    "lowest[cond_no]=0\n",
    "\n",
    "data['Low'] = map(sum, lowest.iterrows())\n",
    "data['HLP'] = (data.High-data.Low)/len(StockList)\n",
    "\n",
    "print data.HLP.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                 ADP       HLP       MAP           HSI\n",
      "Date                                                  \n",
      "2016-01-01  0.000000  0.000000  0.000000           NaN\n",
      "2016-01-04 -0.965517  0.000000  0.000000  21327.119141\n",
      "2016-01-05  0.000000  0.000000  0.000000  21188.720703\n",
      "2016-01-06 -0.689655  0.000000  0.000000  20980.810547\n",
      "2016-01-07 -1.000000 -0.931034 -1.000000  20333.339844\n",
      "2016-01-08 -0.172414 -0.551724 -1.000000  20453.710938\n",
      "2016-01-11 -1.000000 -0.896552 -1.000000  19888.500000\n",
      "2016-01-12 -0.689655 -0.655172 -1.000000  19711.759766\n",
      "2016-01-13  0.551724 -0.275862 -0.517241  19934.880859\n",
      "2016-01-14 -0.413793 -0.655172 -0.517241  19817.410156\n",
      "2016-01-15 -0.758621 -0.448276 -0.655172  19520.769531\n",
      "2016-01-18 -0.689655 -0.793103 -0.862069  19237.449219\n",
      "2016-01-19  0.689655 -0.206897 -0.034483  19635.810547\n",
      "2016-01-20 -1.000000 -0.862069 -0.862069  18886.300781\n",
      "2016-01-21 -0.862069 -0.793103 -0.862069  18542.150391\n",
      "2016-01-22  0.931034 -0.137931 -0.517241  19080.509766\n",
      "2016-01-25  0.448276  0.000000  0.034483  19340.140625\n",
      "2016-01-26 -0.862069 -0.275862 -0.310345  18860.800781\n",
      "2016-01-27  0.241379 -0.103448 -0.034483  19052.449219\n",
      "2016-01-28  0.344828  0.000000  0.103448  19195.830078\n",
      "2016-01-29  0.724138  0.379310  0.793103  19683.109375\n",
      "2016-02-01 -0.344828  0.448276  0.448276  19595.500000\n",
      "2016-02-02 -0.137931  0.103448  0.379310  19446.839844\n",
      "2016-02-03 -0.827586 -0.310345 -0.655172  18991.589844\n",
      "2016-02-04  0.586207  0.103448 -0.103448  19183.089844\n",
      "2016-02-05  0.413793  0.137931  0.310345  19288.169922\n",
      "2016-02-08  0.000000  0.000000  0.586207           NaN\n",
      "2016-02-09  0.000000  0.000000  0.586207           NaN\n",
      "2016-02-10  0.000000  0.000000  0.448276           NaN\n",
      "2016-02-11 -0.862069 -0.862069 -0.862069  18545.800781\n",
      "...              ...       ...       ...           ...\n",
      "2016-05-20  0.620690  0.206897  0.241379  19852.199219\n",
      "2016-05-23 -0.448276 -0.137931 -0.172414  19809.029297\n",
      "2016-05-24 -0.103448 -0.103448  0.103448  19830.429688\n",
      "2016-05-25  0.931034  0.655172  0.862069  20368.050781\n",
      "2016-05-26  0.103448  0.310345  0.862069  20397.109375\n",
      "2016-05-27  0.344828  0.448276  0.793103  20576.769531\n",
      "2016-05-30  0.620690  0.586207  0.724138  20629.390625\n",
      "2016-05-31  0.620690  0.758621  0.724138  20815.089844\n",
      "2016-06-01  0.103448  0.172414  0.448276  20760.980469\n",
      "2016-06-02  0.310345  0.448276  0.586207  20859.220703\n",
      "2016-06-03  0.758621  0.586207  0.655172  20947.240234\n",
      "2016-06-06  0.620690  0.517241  0.655172  21030.220703\n",
      "2016-06-07  0.724138  0.758621  0.931034  21328.240234\n",
      "2016-06-08  0.172414  0.379310  0.862069  21297.880859\n",
      "2016-06-09  0.000000  0.000000  0.793103           NaN\n",
      "2016-06-10 -0.448276  0.103448 -0.379310  21042.640625\n",
      "2016-06-13 -0.862069 -0.896552 -0.862069  20512.990234\n",
      "2016-06-14 -0.586207 -0.551724 -0.931034  20387.529297\n",
      "2016-06-15  0.172414 -0.689655 -0.586207  20467.519531\n",
      "2016-06-16 -0.965517 -0.689655 -1.000000  20038.419922\n",
      "2016-06-17  0.586207 -0.103448 -0.517241  20169.980469\n",
      "2016-06-20  0.896552  0.172414  0.724138  20510.199219\n",
      "2016-06-21  0.413793  0.482759  0.655172  20668.439453\n",
      "2016-06-22  0.758621  0.482759  0.931034  20795.119141\n",
      "2016-06-23  0.137931  0.551724  0.862069  20868.339844\n",
      "2016-06-24 -0.793103 -0.413793 -0.793103  20259.130859\n",
      "2016-06-27  0.172414 -0.034483 -0.586207  20227.300781\n",
      "2016-06-28 -0.310345 -0.034483 -0.448276  20172.460938\n",
      "2016-06-29  0.965517  0.379310  0.379310  20436.119141\n",
      "2016-06-30  0.827586  0.689655  1.000000  20794.369141\n",
      "\n",
      "[130 rows x 4 columns]\n"
     ]
    }
   ],
   "source": [
    "#MA50\n",
    "import talib as ta\n",
    "\n",
    "adj_close = pn.minor_xs('Adj Close')\n",
    "\n",
    "ma = pd.DataFrame({item: ta.MA(series.values, 5) for item, series in adj_close.iteritems()}, index=adj_close.index)\n",
    "cond_ma = adj_close>=ma\n",
    "cond_no = adj_close<ma\n",
    "\n",
    "ma[cond_ma] = 1\n",
    "ma[cond_no] = -1\n",
    "\n",
    "data['MA'] = map(sum, ma.iterrows())\n",
    "data['MAP'] = data.MA/len(StockList)\n",
    "\n",
    "result = pd.concat([data.ADP, data.HLP, data.MAP], axis=1)\n",
    "HSI = web.DataReader('^HSI', 'yahoo', start, end)\n",
    "result['HSI'] = HSI['Adj Close']\n",
    "\n",
    "print result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda2\\lib\\site-packages\\ipykernel\\__main__.py:6: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "D:\\ProgramData\\Anaconda2\\lib\\site-packages\\ipykernel\\__main__.py:7: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2b21128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "result = result.dropna()\n",
    "\n",
    "\n",
    "result['ADP_MAS'] = ta.abstract.MA(result, 5, price='ADP')\n",
    "result['ADP_MAL'] = ta.abstract.MA(result, 15, price='ADP')\n",
    "\n",
    "plt.subplot(2,1,1)\n",
    "plt.plot(result.HSI)\n",
    "plt.subplot(2,1,2)\n",
    "plt.bar(result.index, result.ADP)\n",
    "\n",
    "plt.plot(result.ADP_MAS, c='r', label ='ma_long')\n",
    "plt.plot(result.ADP_MAL, c='g', label ='ma_long')\n",
    "plt.legend(loc='upper left')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 如何用市场宽度来编写策略？\n",
    "当均线金叉（短期大于长期均线）时候买进，死叉（短期小于长期）时卖出。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "buy_time: [Timestamp('2016-02-04 00:00:00'), Timestamp('2016-02-12 00:00:00'), Timestamp('2016-02-26 00:00:00'), Timestamp('2016-03-01 00:00:00'), Timestamp('2016-03-11 00:00:00'), Timestamp('2016-03-17 00:00:00'), Timestamp('2016-03-30 00:00:00'), Timestamp('2016-04-06 00:00:00'), Timestamp('2016-04-19 00:00:00'), Timestamp('2016-04-21 00:00:00'), Timestamp('2016-05-09 00:00:00'), Timestamp('2016-05-16 00:00:00'), Timestamp('2016-05-20 00:00:00'), Timestamp('2016-06-20 00:00:00'), Timestamp('2016-06-29 00:00:00')]\n",
      "buy_price [19183.089843999998, 18319.580077999999, 19364.150390999999, 19407.460938, 20199.599609000001, 20503.810547000001, 20803.390625, 20206.669922000001, 21436.210938, 21622.25, 20156.810547000001, 19883.949218999998, 19852.199218999998, 20510.199218999998, 20436.119140999999]\n",
      "sell_time [Timestamp('2016-02-03 00:00:00'), Timestamp('2016-02-11 00:00:00'), Timestamp('2016-02-24 00:00:00'), Timestamp('2016-02-29 00:00:00'), Timestamp('2016-03-08 00:00:00'), Timestamp('2016-03-15 00:00:00'), Timestamp('2016-03-22 00:00:00'), Timestamp('2016-04-01 00:00:00'), Timestamp('2016-04-18 00:00:00'), Timestamp('2016-04-20 00:00:00'), Timestamp('2016-04-22 00:00:00'), Timestamp('2016-05-11 00:00:00'), Timestamp('2016-05-19 00:00:00'), Timestamp('2016-06-10 00:00:00'), Timestamp('2016-06-24 00:00:00')]\n",
      "sell_price [18991.589843999998, 18545.800781000002, 19192.449218999998, 19111.929688, 20011.580077999999, 20288.769531000002, 20666.75, 20498.919922000001, 21161.5, 21236.310547000001, 21467.039062, 20055.289062, 19694.330077999999, 21042.640625, 20259.130859000001]\n"
     ]
    }
   ],
   "source": [
    "buy_time=[]\n",
    "buy_price=[]\n",
    "\n",
    "sell_time=[]\n",
    "sell_price=[]\n",
    "\n",
    "data = result.dropna()\n",
    "it = result.iterrows()\n",
    "t0, p0 = next(it)\n",
    "pos = 0\n",
    "\n",
    "for t1, p1 in it:\n",
    "    if p1.ADP_MAS > p1.ADP_MAL and p0.ADP_MAS < p0.ADP_MAL:\n",
    "        buy_time.append(t1)\n",
    "        buy_price.append(p1.HSI)\n",
    "    elif p1.ADP_MAS < p1.ADP_MAL and p0.ADP_MAS > p0.ADP_MAL:\n",
    "        sell_time.append(t1)\n",
    "        sell_price.append(p1.HSI)\n",
    "    t0, p0 = t1, p1\n",
    "\n",
    "print 'buy_time:', buy_time\n",
    "print 'buy_price', buy_price\n",
    "print 'sell_time', sell_time\n",
    "print 'sell_price', sell_price"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nld1IAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xc00f7f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib as mpl\n",
    "mpl.rc('xtick', labelsize=8)\n",
    "plt.plot(result['HSI'], c='b')\n",
    "plt.scatter(buy_time, buy_price, c='r', marker='^', linewidths=3)\n",
    "plt.scatter(sell_time, sell_price, c='g', marker='v', linewidths=3)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "money = np.array(sell_price) - np.array(buy_price)\n",
    "money = list(money)\n",
    "money.insert(0,0)\n",
    "money = np.array(money)\n",
    "capital = money.cumsum()\n",
    "plt.plot(capital)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
